<script setup>

import {ref} from 'vue'
import pageofficeCtrlUtil, {callbackPOParentFunction} from "@/plugins/pageoffice/pageoffice-word-excel.js";
import PageOfficeFile from "@/components/PageOfficeFile/index.vue";
import {getDocMyMainFileInfo, getDocMyRedSheetMainFileInfo} from "@/api/document/mainFile.js";
import SelectTemplateList from "@/views/common/selectTemplateList.vue";
import {draftComplete, getDocMyRedSheetTemplatePageList, redSheetAutoFill} from "@/api/document/myDocument.js";

const poHtml = ref('')
let docId = undefined
const isEdit = ref(false)
//组装控件所需的自定义按钮的参数,
// 数组的第一个元素： 按钮的标题（如果设置为 "-"，表示此按钮是分隔线）；第二个元素： 点击当前按钮时触发的 JavaScript 函数名；第一个元素： 按钮图标的索引；
//组装PageOfficeCtrl控件所需的自定义按钮参数
const customButtonsForPO = [
  ["保存", "save", 1],
  ["另存", "saveAsFile", 11],
  ["-", "", 0],
  ["添加批注", "addComment", 3],
  ["删除所有批注", "deleteAllComments", 14],
  ["接受所有修订", "acceptAllRevisions", 5],
  ["显示/隐藏痕迹", "showOrHideRevisions", 9],
  ["下一个", "nextRevision", 12],
  ["上一个", "previousRevision", 15],
  ["-", "", 0]
]

onMounted(() => {
  //获取pageoffice客户端传过来的参数
  docId = JSON.parse(pageofficectrl.WindowParams)
  getFile()
})

function getFile() {
  getDocMyMainFileInfo(docId).then(result => {
    poHtml.value = result.html
    isEdit.value = result.isEdit
    //挂载PageOfficeCtrl 或 PDFCtrl控件需要调用的函数，例如控件触发的事件、自定义按钮触发的函数等。
    if (!result.isPdf) {
      pageofficeCtrlUtil.jsFunctionMounted(customJSFunctions, customButtonsForPO)
    }
  })
}

const saveDocument = () => {
  let revisionCount = pageofficeCtrlUtil.getRevisionCount() + pageofficeCtrlUtil.getCommentCount()
  //保存正文
  pageofficectrl.SaveFilePage = '/doc/my/updateMainWord?id=' + docId + '&revisionCount=' + revisionCount
  //执行保存
  pageofficectrl.WebSave()
  //服务端返回保存结果
  const customSaveResult = pageofficectrl.CustomSaveResult
  if (customSaveResult === 'ok') {
    //刷新父页面的痕迹数量
    const params = {revisionCount: revisionCount}
    callbackPOParentFunction(params, 'refreshRevisionCount', () => {
      pageofficeCtrlUtil.msgSuccess('保存成功')
    })
  }
}

const customJSFunctions = {
  //控件初始化事件，函数名是指定的，不可修改，此处根据实际情况重写OnPageOfficeCtrlInit事件代码
  OnPageOfficeCtrlInit: () => {
    // 添加自定义按钮
    pageofficeCtrlUtil.addCustomButtons(isEdit.value ? customButtonsForPO : null)
  },
  AfterDocumentOpened: () => {
    //显示痕迹
    pageofficectrl.ShowRevisions = true
  },
  //部分自定义按钮执行的js函数
  save: saveDocument,
}


</script>

<template>
  <PageOfficeFile :poHtml="poHtml"/>
</template>

